package com.enjoyor.soa.traffic.api.ubms.service.dubbo;

import com.enjoyor.soa.traffic.api.ubms.dto.GpsInfoDto;
import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 维护GPS定位装置信息的Dubbo服务
 * @author yuankun
 * @version V1.0
 */

public interface DubboGpsInfoService {
	
	/**
	 * 返回所有GPS定位装置信息
	 * @return ResultPojo 所有GPS定位装置信息
	 */
	public ResultPojo getGpsInfo();

	/**
	 * 分页返回所有GPS定位装置信息
	 * @param page 分页对象
	 * @return ResultPojo 包含所有GPS定位装置信息的分页对象
	 */
	@SuppressWarnings("rawtypes")
	public ResultPojo getPageGpsInfo(Page page);

	/**
	 * 返回指定设备编码的GPS定位装置信息
	 * @param gpsId 设备编码
	 * @return ResultPojo 路段信息
	 */
	public ResultPojo getGpsInfoById(String gpsId);
	
	/**
	 * 按名称匹配并返回GPS定位装置信息
	 * @param gpsName GPS定位装置名称
	 * @return ResultPojo GPS定位装置信息
	 */
	public ResultPojo getGpsInfoByName(String gpsName);
	
	/**
	 * 返回指定设备标识的GPS定位装置信息
	 * @param devId 设备标识
	 * @return ResultPojo GPS定位装置信息
	 */
	public ResultPojo getGpsInfoByDevId(String devId);
	
	/**
	 * 返回指定定位标识的GPS定位装置信息
	 * @param locId 定位标识
	 * @return ResultPojo GPS定位装置信息
	 */
	public ResultPojo getGpsInfoByLocId(String locId);
	
	/**
	 * 返回指定SIM卡号的GPS定位装置信息
	 * @param sim SIM卡号
	 * @return ResultPojo GPS定位装置信息
	 */
	public ResultPojo getGpsInfoBySim(String sim);
	
	/**
	 * 返回与输入前缀相匹配的最大GPS设备编码值，用于手工生成新的GPS设备编码
	 * @param prefixGpsId GPS设备编码前缀
	 * @return String 与前缀相匹配的最大GPS设备编码值
	 */
	public String getMaxGpsId(String prefixGpsId);
	
	/**
	 * 添加一条GPS定位装置信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param gpsInfoDto GPS定位装置信息
	 * @return ResultPojo 添加结果
	 */
	public ResultPojo addGpsInfo(String token, GpsInfoDto gpsInfoDto);

	/**
	 * 修改一条GPS定位装置信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param gpsInfoDto GPS定位装置信息
	 * @return ResultPojo 修改结果
	 */
	public ResultPojo editGpsInfo(String token, GpsInfoDto gpsInfoDto);

	/**
	 * 删除指定编码的GPS定位装置信息
	 * @param token 以逗号分隔的输入信息，如用户名等
	 * @param gpsId GPS定位装置编码
	 * @return ResultPojo 删除结果
	 */
	public ResultPojo removeGpsInfo(String token, String gpsId);
}
